# -*- coding: utf-8 -*-
"""
计算器插件
提供基本的数学计算功能
"""

import sys
import os

# 添加父目录到路径，以便导入core模块
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

from core.plugin_manager import BasePlugin


class CalculatorPlugin(BasePlugin):
    """计算器插件"""
    
    def __init__(self):
        super().__init__()
        self.name = "calc"
        self.version = "1.0.0"
        self.description = "基本计算器功能，支持四则运算"
        
    def execute(self, args):
        """执行计算器功能"""
        if not args:
            self.show_help()
            return True
            
        expression = ' '.join(args)
        
        try:
            # 安全的数学表达式求值
            result = self.safe_eval(expression)
            print(f"{expression} = {result}")
            
        except Exception as e:
            print(f"计算错误: {e}")
            print("请检查表达式是否正确")
            
        return True
        
    def safe_eval(self, expression):
        """安全的表达式求值"""
        # 只允许数字、基本运算符和括号
        allowed_chars = set('0123456789+-*/().= ')
        
        if not all(c in allowed_chars for c in expression):
            raise ValueError("表达式包含不允许的字符")
            
        # 移除等号及其后面的内容（如果有的话）
        if '=' in expression:
            expression = expression.split('=')[0]
            
        # 使用eval计算（在受限环境中）
        return eval(expression, {"__builtins__": {}}, {})
        
    def show_help(self):
        """显示帮助信息"""
        print("\n=== 计算器使用说明 ===")
        print("用法: calc <数学表达式>")
        print("\n支持的运算:")
        print("  +  加法")
        print("  -  减法")
        print("  *  乘法")
        print("  /  除法")
        print("  () 括号")
        print("\n示例:")
        print("  calc 1 + 2")
        print("  calc 3 * 4 + 5")
        print("  calc (10 + 5) / 3")
        
    def get_help(self):
        """获取插件帮助信息"""
        return f"{self.name}: {self.description}\n  用法: calc <数学表达式>"